The tree is not needed to walk around the nodes.
It is however still needed for anything that requires modifying the
tree.
There is no immediate benefit in changing this API, but there might be
situations in the future where we can avoid looking up the tree when we
just want to check some details about the node.
while (node)
{
- tmp = gtk_rb_tree_get_left (tree, node);
+ tmp = gtk_rb_tree_node_get_left (node);
if (tmp)
{
FilterAugment *aug = gtk_rb_tree_get_augment (tree, tmp);
unfiltered++;
- node = gtk_rb_tree_get_right (tree, node);
+ node = gtk_rb_tree_node_get_right (node);
}
if (out_unfiltered)
while (node)
{
- tmp = gtk_rb_tree_get_left (tree, node);
+ tmp = gtk_rb_tree_node_get_left (node);
if (tmp)
{
FilterAugment *aug = gtk_rb_tree_get_augment (tree, tmp);
if (node->visible)
filtered++;
- node = gtk_rb_tree_get_right (tree, node);
+ node = gtk_rb_tree_node_get_right (node);
}
if (out_filtered)
filter_removed = 0;
for (i = 0; i < removed; i++)
{
- FilterNode *next = gtk_rb_tree_get_next (self->items, node);
+ FilterNode *next = gtk_rb_tree_node_get_next (node);
if (node->visible)
filter_removed++;
gtk_rb_tree_remove (self->items, node);
n_was_visible = 0;
for (i = 0, node = gtk_rb_tree_get_first (self->items);
node != NULL;
- i++, node = gtk_rb_tree_get_next (self->items, node))
+ i++, node = gtk_rb_tree_node_get_next (node))
{
visible = gtk_filter_list_model_run_filter (self, i);
if (visible == node->visible)
}
node->visible = visible;
- gtk_rb_tree_mark_dirty (self->items, node);
+ gtk_rb_tree_node_mark_dirty (node);
first_change = MIN (n_is_visible, first_change);
if (visible)
n_is_visible++;
while (node)
{
- tmp = gtk_rb_tree_get_left (tree, node);
+ tmp = gtk_rb_tree_node_get_left (node);
if (tmp)
{
FlattenAugment *aug = gtk_rb_tree_get_augment (tree, tmp);
break;
position -= model_n_items;
- node = gtk_rb_tree_get_right (tree, node);
+ node = gtk_rb_tree_node_get_right (node);
}
if (model_position)
while (node)
{
- tmp = gtk_rb_tree_get_left (tree, node);
+ tmp = gtk_rb_tree_node_get_left (node);
if (tmp)
{
FlattenAugment *aug = gtk_rb_tree_get_augment (tree, tmp);
position--;
before += g_list_model_get_n_items (node->model);
- node = gtk_rb_tree_get_right (tree, node);
+ node = gtk_rb_tree_node_get_right (node);
}
if (items_before)
GtkFlattenListModel *self = node->list;
guint real_position;
- gtk_rb_tree_mark_dirty (self->items, node);
+ gtk_rb_tree_node_mark_dirty (node);
for (real_position = position;
- (parent = gtk_rb_tree_get_parent (self->items, node)) != NULL;
+ (parent = gtk_rb_tree_node_get_parent (node)) != NULL;
node = parent)
{
- FlattenNode *left = gtk_rb_tree_get_left (self->items, parent);
+ FlattenNode *left = gtk_rb_tree_node_get_left (parent);
if (left != node)
{
if (left)
real_removed = 0;
for (i = 0; i < removed; i++)
{
- FlattenNode *next = gtk_rb_tree_get_next (self->items, node);
+ FlattenNode *next = gtk_rb_tree_node_get_next (node);
real_removed += g_list_model_get_n_items (node->model);
gtk_rb_tree_remove (self->items, node);
node = next;
while (node)
{
- tmp = gtk_rb_tree_get_left (tree, node);
+ tmp = gtk_rb_tree_node_get_left (node);
if (tmp)
{
MapAugment *aug = gtk_rb_tree_get_augment (tree, tmp);
}
position -= node->n_items;
- node = gtk_rb_tree_get_right (tree, node);
+ node = gtk_rb_tree_node_get_right (node);
}
if (out_start_pos)
MapNode *before = gtk_rb_tree_insert_before (self->items, node);
before->n_items = position - offset;
node->n_items -= before->n_items;
- gtk_rb_tree_mark_dirty (self->items, node);
+ gtk_rb_tree_node_mark_dirty (node);
}
if (node->n_items > 1)
MapNode *after = gtk_rb_tree_insert_after (self->items, node);
after->n_items = node->n_items - 1;
node->n_items = 1;
- gtk_rb_tree_mark_dirty (self->items, node);
+ gtk_rb_tree_node_mark_dirty (node);
}
node->item = self->map_func (g_list_model_get_item (self->model, position), self->user_data);
end = start + node->n_items;
if (start == position && end <= position + removed)
{
- MapNode *next = gtk_rb_tree_get_next (self->items, node);
+ MapNode *next = gtk_rb_tree_node_get_next (node);
removed -= node->n_items;
gtk_rb_tree_remove (self->items, node);
node = next;
{
node->n_items -= removed;
removed = 0;
- gtk_rb_tree_mark_dirty (self->items, node);
+ gtk_rb_tree_node_mark_dirty (node);
}
else if (start < position)
{
guint overlap = node->n_items - (position - start);
node->n_items -= overlap;
- gtk_rb_tree_mark_dirty (self->items, node);
+ gtk_rb_tree_node_mark_dirty (node);
removed -= overlap;
start = position;
- node = gtk_rb_tree_get_next (self->items, node);
+ node = gtk_rb_tree_node_get_next (node);
}
}
}
node = gtk_rb_tree_insert_after (self->items, node);
node->n_items += added;
- gtk_rb_tree_mark_dirty (self->items, node);
+ gtk_rb_tree_node_mark_dirty (node);
}
g_list_model_items_changed (G_LIST_MODEL (self), position, removed, added);
{
MapNode *node = gtk_rb_tree_insert_before (self->items, NULL);
node->n_items = g_list_model_get_n_items (self->model);
- gtk_rb_tree_mark_dirty (self->items, node);
+ gtk_rb_tree_node_mark_dirty (node);
}
}
else
}
gpointer
-gtk_rb_tree_get_previous (GtkRbTree *tree,
- gpointer node)
+gtk_rb_tree_node_get_previous (gpointer node)
{
return NODE_TO_POINTER (gtk_rb_node_get_previous (NODE_FROM_POINTER (node)));
}
gpointer
-gtk_rb_tree_get_next (GtkRbTree *tree,
- gpointer node)
+gtk_rb_tree_node_get_next (gpointer node)
{
return NODE_TO_POINTER (gtk_rb_node_get_next (NODE_FROM_POINTER (node)));
}
}
gpointer
-gtk_rb_tree_get_parent (GtkRbTree *tree,
- gpointer node)
+gtk_rb_tree_node_get_parent (gpointer node)
{
return NODE_TO_POINTER (parent (NODE_FROM_POINTER (node)));
}
gpointer
-gtk_rb_tree_get_left (GtkRbTree *tree,
- gpointer node)
+gtk_rb_tree_node_get_left (gpointer node)
{
return NODE_TO_POINTER (NODE_FROM_POINTER (node)->left);
}
gpointer
-gtk_rb_tree_get_right (GtkRbTree *tree,
- gpointer node)
+gtk_rb_tree_node_get_right (gpointer node)
{
return NODE_TO_POINTER (NODE_FROM_POINTER (node)->right);
}
}
void
-gtk_rb_tree_mark_dirty (GtkRbTree *tree,
- gpointer node)
+gtk_rb_tree_node_mark_dirty (gpointer node)
{
gtk_rb_node_mark_dirty (NODE_FROM_POINTER (node), TRUE);
}
GtkRbTree * gtk_rb_tree_ref (GtkRbTree *tree);
void gtk_rb_tree_unref (GtkRbTree *tree);
+gpointer gtk_rb_tree_get_root (GtkRbTree *tree);
gpointer gtk_rb_tree_get_first (GtkRbTree *tree);
gpointer gtk_rb_tree_get_last (GtkRbTree *tree);
-gpointer gtk_rb_tree_get_previous (GtkRbTree *tree,
- gpointer node);
-gpointer gtk_rb_tree_get_next (GtkRbTree *tree,
- gpointer node);
-gpointer gtk_rb_tree_get_root (GtkRbTree *tree);
-gpointer gtk_rb_tree_get_parent (GtkRbTree *tree,
- gpointer node);
-gpointer gtk_rb_tree_get_left (GtkRbTree *tree,
- gpointer node);
-gpointer gtk_rb_tree_get_right (GtkRbTree *tree,
- gpointer node);
-gpointer gtk_rb_tree_get_augment (GtkRbTree *tree,
- gpointer node);
+gpointer gtk_rb_tree_node_get_previous (gpointer node);
+gpointer gtk_rb_tree_node_get_next (gpointer node);
+gpointer gtk_rb_tree_node_get_parent (gpointer node);
+gpointer gtk_rb_tree_node_get_left (gpointer node);
+gpointer gtk_rb_tree_node_get_right (gpointer node);
GtkRbTree * gtk_rb_tree_node_get_tree (gpointer node);
+void gtk_rb_tree_node_mark_dirty (gpointer node);
-void gtk_rb_tree_mark_dirty (GtkRbTree *tree,
+gpointer gtk_rb_tree_get_augment (GtkRbTree *tree,
gpointer node);
gpointer gtk_rb_tree_insert_before (GtkRbTree *tree,
while (child)
{
- tmp = gtk_rb_tree_get_left (tree, child);
+ tmp = gtk_rb_tree_node_get_left (child);
if (tmp)
{
aug = gtk_rb_tree_get_augment (tree, tmp);
position--;
- child = gtk_rb_tree_get_right (tree, child);
+ child = gtk_rb_tree_node_get_right (child);
}
return NULL;
TreeAugment *left_aug;
guint n;
- left = gtk_rb_tree_get_left (tree, node);
+ left = gtk_rb_tree_node_get_left (node);
if (left)
{
left_aug = gtk_rb_tree_get_augment (tree, left);
n = 0;
}
- for (parent = gtk_rb_tree_get_parent (tree, node);
+ for (parent = gtk_rb_tree_node_get_parent (node);
parent;
- parent = gtk_rb_tree_get_parent (tree, node))
+ parent = gtk_rb_tree_node_get_parent (node))
{
- left = gtk_rb_tree_get_left (tree, parent);
+ left = gtk_rb_tree_node_get_left (parent);
if (left == node)
{
/* we are the left node, nothing changes */
{
tree = node->parent->children;
- left = gtk_rb_tree_get_left (tree, node);
+ left = gtk_rb_tree_node_get_left (node);
if (left)
{
left_aug = gtk_rb_tree_get_augment (tree, left);
n += left_aug->n_items;
}
- for (parent = gtk_rb_tree_get_parent (tree, node);
+ for (parent = gtk_rb_tree_node_get_parent (node);
parent;
- parent = gtk_rb_tree_get_parent (tree, node))
+ parent = gtk_rb_tree_node_get_parent (node))
{
- left = gtk_rb_tree_get_left (tree, parent);
+ left = gtk_rb_tree_node_get_left (parent);
if (left == node)
{
/* we are the left node, nothing changes */
!node->is_root;
node = node->parent)
{
- gtk_rb_tree_mark_dirty (node->parent->children, node);
+ gtk_rb_tree_node_mark_dirty (node);
}
}
while (TRUE)
{
- tmp = gtk_rb_tree_get_left (tree, node);
+ tmp = gtk_rb_tree_node_get_left (node);
if (tmp)
{
TreeAugment *aug = gtk_rb_tree_get_augment (tree, tmp);
}
position -= n_children;
- node = gtk_rb_tree_get_right (tree, node);
+ node = gtk_rb_tree_node_get_right (node);
}
g_return_val_if_reached (NULL);
for (i = 0; i < removed; i++)
{
tmp = child;
- child = gtk_rb_tree_get_next (node->children, child);
+ child = gtk_rb_tree_node_get_next (child);
gtk_rb_tree_remove (node->children, tmp);
}
}
for (i = 0; i < added; i++)
{
tree_added += gtk_tree_list_model_expand_node (self, child);
- child = gtk_rb_tree_get_next (node->children, child);
+ child = gtk_rb_tree_node_get_next (child);
}
}
while (node)
{
- tmp = gtk_rb_tree_get_left (tree, node);
+ tmp = gtk_rb_tree_node_get_left (node);
if (tmp)
{
Aug *aug = gtk_rb_tree_get_augment (tree, tmp);
break;
pos--;
- node = gtk_rb_tree_get_right (tree, node);
+ node = gtk_rb_tree_node_get_right (node);
}
return node;
{
Node *child;
- child = gtk_rb_tree_get_left (tree, node);
+ child = gtk_rb_tree_node_get_left (node);
if (child)
n = print_node (tree, child, depth + 1, "/", n);
g_print ("%*s %u\n", 2 * depth, prefix, n);
n++;
- child = gtk_rb_tree_get_right (tree, node);
+ child = gtk_rb_tree_node_get_right (node);
if (child)
n = print_node (tree, child, depth + 1, "\\", n);